﻿#include "MyHeader.h"
#include "MyPicture.h"

int main()
{
    // 设置 OpenCV 日志级别为 WARNING
    run_in_debug(cv::utils::logging::setLogLevel(cv::utils::logging::LOG_LEVEL_WARNING);
    std::cout << "OpenCV Version: " << CV_VERSION << std::endl;)
    // 输出OpenCV编译信息，确认JPEG支持
    try {
        std::cout << "OpenCV build info:\n" << cv::getBuildInformation() << std::endl;
    }
    catch (const cv::Exception& e) {
        std::cerr << "OpenCV getBuildInformation() 出错: " << e.msg << std::endl;
    }
    catch (...) {
        std::cerr << "未知错误\n";
    }

    // 测试图片处理
    test_picture();

    // 创建VideoCapture对象，参数为0表示默认摄像头
    cv::VideoCapture cap(0);

    // 检查摄像头是否成功打开
    if (!cap.isOpened()) {
        std::cout << "无法打开摄像头，可能是摄像头设备未连接或OpenCV库配置问题。\n";
        //return -1;
    }
    else {
        // 创建一个窗口来显示视频帧
        cv::namedWindow("摄像头视频", cv::WINDOW_NORMAL);

        cv::Mat frame;

        // 无限循环读取视频帧并显示
        while (true) {
            // 读取一帧视频
            cap >> frame;

            // 如果帧为空，则表示读取失败，退出循环
            if (frame.empty()) {
                std::cout << "无法读取视频帧。\n";
                break;
            }

            // 在窗口中显示当前帧
            cv::imshow("摄像头视频", frame);

            // 按下 q 键时退出循环
            if (cv::waitKey(25) == 'q') {
                break;
            }

            // 检查窗口是否被关闭
            if (cv::getWindowProperty("摄像头视频", cv::WND_PROP_VISIBLE) == 0) {
                std::cout << "窗口被关闭，退出程序。\n";
                break;
            }
        }
    }

    // 等待用户按键，然后关闭窗口
    cv::waitKey(0);
    //cv::destroyWindow("Display Image");

    // 关闭所有OpenCV窗口
    cv::destroyAllWindows();

	return 0;
}